進階-不同分支的App Release
我們會使用分支來打包與部署不同環境的 App
接下來示範
develop 分支 -> 推送 Staging 環境
master 分支 -> 推送 Release 環境
可以看到我們的 CI 檔案中已經設置好應有的分支,再來只要推送就好了!
哇!我們成功地讓不同分支可以讀到不同的環境配置了!接下來讓我們再更近一步,將不同環境的App 部署到不同的 App Store 項目中,使得我們可以在正式與測試環境中很自由的使用與測試。
進階-把環境分到不同的 App 中
我們將不同環境配置的項目,打包到不同的 App Store 項目中吧!
讓我們在建立一個AppStore App
然後再 Config 檔案中加入變數
這邊有一個要更注意的點,也是常常會出現的坑!
記得project.pbxproj內也要改
最後修改一下 Appfile
測試一下,可以發現替換成功
回到 AppStore 查看,確定Deploy成功
確認 Develop 分支下的包ID
確認 Master 分支下的包ID
快樂的 Testflight
哇,我們現在環境配置與建置已經非常完整了,App 中常常會加入 Firebase 來使用,是很棒的工具庫,那我要如何將Firebase也換環境呢?接下來就讓我們來達成他!
我們將進行 Firebase 配置檔案也可以分環境!
我們知道 firebase 都有一個設定檔案GoogleService-Info.plist
如果我想依照環境設置不同的設定檔案,該如何做?
設置 Firebase
##加入 iOS 應用程式
輸入基本資訊 Release 用
安裝 Pod
初始化 SDK
在建立一個 Staging 用
然後將下載下來的檔案,分別命名成
GoogleService-Info-Debug.plist
GoogleService-Info-Staging.plist
GoogleService-Info-Release.plist
最後來加一個腳本
腳本內容如下
如此一來,就會在編譯期間抓取需要的設定檔案,實現分離環境讀取 firebase 設定!
太棒了,連 firebase 都可以分環境了!太棒了,我們幾乎將所有實戰中遇到的問題都配置完成了!接下來讓我們看如何更完整,把 Slack 通知也一併的配置進來。
進階-Slack 通知
我們要目標是讓 ChatOps 活起來,如此一來團隊中每個成員都可以很好的知道目前 App 的動向。
最後讓我們加碼一下,把 slack 加入吧!
效果如下:
很簡單,我們需要修改 Fastfile,加入 slack插件,將slack url 替換成自己設置好的 webhook!就可以了
最後再加入我們的 Deploy中
最後我們來看一下訊息!
##總結
大功告成!到目前為止我們就完成了真正一個產品開發的環境管理,因為有變數的關係,理論上是所有服務都可以分環境的,FB SDK、Line SDK 等等,授權與認證完全可以用變數的方式取代,CI/CD也大大簡化了人工分環境的困擾與繁瑣的流程。也成功地引入 DevOps、 Code as Infrastructure 的精神